﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DTO;
using BLL;

namespace GUI
{
    public partial class ChiTietSanPham : System.Web.UI.Page
    {

        #region Khai bao
        private SanPhamBLL spBLL;
        private List<SanPhamDTO> lstSP;
        private SanPhamDTO sp;
        private NhaSanXuatBLL nsxBLL;
        private NhaSanXuatDTO nsxDTO;
        private HinhAnhBLL haBLL;
        private HinhAnhDTO haDTO;

        private List<GioHangDTO> _lstgioHang; //_lstgioHang

        #endregion

        #region protected void Page_Load(object sender, EventArgs e)
        protected void Page_Load(object sender, EventArgs e)
        {

            if (!IsPostBack)
            {
                try
                {
                    string masanpham = Request.QueryString["MaSanPham"];
                    this.LoadDuLieu(masanpham);

                    // Cập nhật số lượt xem cho sản phẩm này
                    sp.SoLuotXem = sp.SoLuotXem + 1;
                    spBLL = new SanPhamBLL();
                    spBLL.Sua(sp);

                }
                catch (Exception ex)
                {
                    Response.Redirect("../ErrorMessage.aspx?err=" + ex.Message + " ");
                }
            }
        }
        #endregion

        #region private void LoadDuLieu(string ma)
        private void LoadDuLieu(string ma)
        {
            spBLL = new SanPhamBLL();
            lstSP = new List<SanPhamDTO>();
            sp = new SanPhamDTO();
            try
            {
                sp = spBLL.GetSanPham(ma);
                lstSP.Add(sp);
                //int d = sp.Count;
                //this.LabelTongSoNhanVien.Text = Convert.ToString(d);
                DatalistChiTietSanPham.DataSource = lstSP;
                DatalistChiTietSanPham.DataBind();
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        #endregion

        #region protected string LoadNhaSanXuat(object obj)
        protected string LoadNhaSanXuat(object obj)
        {
            // Dựa vào mã loại  nhân viên để lấy ra cái tên nhân viên
            // Cách này đơn giản nhất nhưng hơi gà
            // :))
            nsxBLL = new NhaSanXuatBLL();
            nsxDTO = new NhaSanXuatDTO();

            string _result = (string)obj;
            nsxDTO = nsxBLL.GetNhaSanXuat(_result);
            return nsxDTO.TenNhaSanXuat;
        }
        #endregion

        #region protected string LoadHinhAnh(object obj)
        protected string LoadHinhAnh(object obj)
        {
            haBLL = new HinhAnhBLL();
            haDTO = new HinhAnhDTO();

            string _result = (string)obj;
            haDTO = haBLL.GetHinhAnhMacDinh(_result);
            if (haDTO.TenHinhAnh == null)
                return "Home/images/no_image.jpg";
            return haDTO.TenHinhAnh;
        }
        #endregion

        #region protected string LoadTinhTrang(object obj)
        protected string LoadTinhTrang(object obj)
        {
            int _result = (int)obj;
            if (_result == 1)
                return "Còn hàng";
            else
                return "Hết hàng";
        }
        #endregion

        #region protected void DatalistChiTietSanPham_ItemCommand(object source, DataListCommandEventArgs e)
        protected void DatalistChiTietSanPham_ItemCommand(object source, DataListCommandEventArgs e)
        {
            //if (Session["GioHang"] == null)
            //{
            //    _lstgioHang = new List<GioHangDTO>();
            //    Session["GioHang"] = _lstgioHang;
            //}
            //else
            //{
            //    _lstgioHang = (List<GioHangDTO>)Session["GioHang"];
            //}



            try
            {

                if (Session["GioHang"] != null)
                    _lstgioHang = (List<GioHangDTO>)Session["GioHang"];
                else
                    _lstgioHang = new List<GioHangDTO>();

                if (e.CommandName.Equals("them"))
                {
                    string masp = (string)e.CommandArgument;
                    themGioHang(masp);

                    //Gan cho session GioHang
                    Session["GioHang"] = _lstgioHang;
                }
            }
            catch (Exception ex)
            {
                throw new Exception(ex.Message);
            }
        }
        #endregion

        #region public void themGioHang(string masp)
        public void themGioHang(string masp)
        {
            bool kq = false;
            int _n = _lstgioHang.Count;

            for (int i = 0; i < _n; i++)
            {
                GioHangDTO sp = (GioHangDTO)_lstgioHang[i];
                if (sp.MaSanPham == masp) // san pham da co trong gio hang
                {
                    _lstgioHang[i].SoLuong += 1; // Có sp roy thì chỉ tăng số lượng sản phẩm đó trong giỏ hàng lên

                    kq = true;
                    break;
                }
            }

            if (kq == false) // san pham dua vao khong co trong gio hang
            {
                SanPhamBLL spBLL = new SanPhamBLL();
                SanPhamDTO _sp = new SanPhamDTO();

                _sp = spBLL.GetSanPham(masp);

                GioHangDTO _gioHang = new GioHangDTO();
                _gioHang.MaSanPham = _sp.MaSanPham;
                _gioHang.TenSanPham = _sp.TenSanPham;
                _gioHang.SoLuong = 1;
                _gioHang.GiaBan = _sp.GiaBan;


                //sp.SoLuongTonKho = 1;
                _lstgioHang.Add(_gioHang);
            }
        }
        #endregion
    }
}